

import java.util.Collection;
import java.util.Iterator;

/**
 * @uml.dependency   supplier="Dado"
 * @uml.dependency   supplier="IDado"
 */
public class Tablero {

	/**
	 * @uml.property  name="jugador"
	 * @uml.associationEnd  inverse="tablero:Jugador"
	 */
	private Jugador jugador;

	/**
	 * Getter of the property <tt>jugador</tt>
	 * @return  Returns the jugador.
	 * @uml.property  name="jugador"
	 */
	public Jugador getJugador() {
		return jugador;
	}

	/**
	 * Setter of the property <tt>jugador</tt>
	 * @param jugador  The jugador to set.
	 * @uml.property  name="jugador"
	 */
	public void setJugador(Jugador jugador) {
		this.jugador = jugador;
	}

	/**
	 * @uml.property  name="iFicha"
	 * @uml.associationEnd  multiplicity="(0 -1)" dimension="1" ordering="true" inverse="tablero:IFicha"
	 */
	private IFicha[] fichas;

	/**
	 * Getter of the property <tt>iFicha</tt>
	 * @return  Returns the fichas.
	 * @uml.property  name="iFicha"
	 */
	public IFicha[] getIFicha() {
		return fichas;
	}

	/**
	 * Setter of the property <tt>iFicha</tt>
	 * @param iFicha  The fichas to set.
	 * @uml.property  name="iFicha"
	 */
	public void setIFicha(IFicha[] ficha) {
		fichas = ficha;
	}

	/**
	 * @uml.property  name="iFicha1"
	 * @uml.associationEnd  multiplicity="(0 -1)" aggregation="composite" inverse="tablero1:IFicha"
	 */
	private Collection ficha1;

	/**
	 * Getter of the property <tt>iFicha1</tt>
	 * @return  Returns the ficha1.
	 * @uml.property  name="iFicha1"
	 */
	public Collection getIFicha1() {
		return ficha1;
	}

	/**
	 * Returns an iterator over the elements in this collection. 
	 * @return  an <tt>Iterator</tt> over the elements in this collection
	 * @see java.util.Collection#iterator()
	 * @uml.property  name="iFicha1"
	 */
	public Iterator iFicha1Iterator() {
		return ficha1.iterator();
	}

	/**
	 * Returns <tt>true</tt> if this collection contains no elements.
	 * @return  <tt>true</tt> if this collection contains no elements
	 * @see java.util.Collection#isEmpty()
	 * @uml.property  name="iFicha1"
	 */
	public boolean isIFicha1Empty() {
		return ficha1.isEmpty();
	}

	/**
	 * Returns <tt>true</tt> if this collection contains the specified element. 
	 * @param element  whose presence in this collection is to be tested.
	 * @see java.util.Collection#contains(Object)
	 * @uml.property  name="iFicha1"
	 */
	public boolean containsIFicha1(IFicha ficha) {
		return ficha1.contains(ficha);
	}

	/**
	 * Returns <tt>true</tt> if this collection contains all of the elements in the specified collection.
	 * @param elements  collection to be checked for containment in this collection.
	 * @see java.util.Collection#containsAll(Collection)
	 * @uml.property  name="iFicha1"
	 */
	public boolean containsAllIFicha1(Collection ficha1) {
		return this.ficha1.containsAll(ficha1);
	}

	/**
	 * Returns the number of elements in this collection.
	 * @return  the number of elements in this collection
	 * @see java.util.Collection#size()
	 * @uml.property  name="iFicha1"
	 */
	public int iFicha1Size() {
		return ficha1.size();
	}

	/**
	 * Returns all elements of this collection in an array.
	 * @return  an array containing all of the elements in this collection
	 * @see java.util.Collection#toArray()
	 * @uml.property  name="iFicha1"
	 */
	public IFicha[] iFicha1ToArray() {
		return (IFicha[]) ficha1.toArray(new IFicha[ficha1.size()]);
	}

	/**
	 * Returns an array containing all of the elements in this collection;  the runtime type of the returned array is that of the specified array.
	 * @param a  the array into which the elements of this collection are to be stored.
	 * @return  an array containing all of the elements in this collection
	 * @see java.util.Collection#toArray(Object[])
	 * @uml.property  name="iFicha1"
	 */
	public IFicha[] iFicha1ToArray(IFicha[] ficha1) {
		return (IFicha[]) this.ficha1.toArray(ficha1);
	}

	/**
	 * Ensures that this collection contains the specified element (optional operation). 
	 * @param element  whose presence in this collection is to be ensured.
	 * @see java.util.Collection#add(Object)
	 * @uml.property  name="iFicha1"
	 */
	public boolean addIFicha1(IFicha ficha) {
		return ficha1.add(ficha);
	}

	/**
	 * Setter of the property <tt>iFicha1</tt>
	 * @param iFicha1  the ficha1 to set.
	 * @uml.property  name="iFicha1"
	 */
	public void setIFicha1(Collection ficha1) {
		ficha1 = ficha1;
	}

	/**
	 * Removes a single instance of the specified element from this collection, if it is present (optional operation).
	 * @param element  to be removed from this collection, if present.
	 * @see java.util.Collection#add(Object)
	 * @uml.property  name="iFicha1"
	 */
	public boolean removeIFicha1(IFicha ficha) {
		return ficha1.remove(ficha);
	}

	/**
	 * Removes all of the elements from this collection (optional operation).
	 * @see java.util.Collection#clear()
	 * @uml.property  name="iFicha1"
	 */
	public void clearIFicha1() {
		ficha1.clear();
	}

	/**
	 * @uml.property  name="mazo"
	 * @uml.associationEnd  multiplicity="(0 -1)" aggregation="composite" inverse="tablero:Mazo"
	 */
	private Collection mazo;

	/**
	 * Getter of the property <tt>mazo</tt>
	 * @return  Returns the mazo.
	 * @uml.property  name="mazo"
	 */
	public Collection getMazo() {
		return mazo;
	}

	/**
	 * Returns an iterator over the elements in this collection. 
	 * @return  an <tt>Iterator</tt> over the elements in this collection
	 * @see java.util.Collection#iterator()
	 * @uml.property  name="mazo"
	 */
	public Iterator mazoIterator() {
		return mazo.iterator();
	}

	/**
	 * Returns <tt>true</tt> if this collection contains no elements.
	 * @return  <tt>true</tt> if this collection contains no elements
	 * @see java.util.Collection#isEmpty()
	 * @uml.property  name="mazo"
	 */
	public boolean isMazoEmpty() {
		return mazo.isEmpty();
	}

	/**
	 * Returns <tt>true</tt> if this collection contains the specified element. 
	 * @param element  whose presence in this collection is to be tested.
	 * @see java.util.Collection#contains(Object)
	 * @uml.property  name="mazo"
	 */
	public boolean containsMazo(Mazo mazo) {
		return this.mazo.contains(mazo);
	}

	/**
	 * Returns <tt>true</tt> if this collection contains all of the elements in the specified collection.
	 * @param elements  collection to be checked for containment in this collection.
	 * @see java.util.Collection#containsAll(Collection)
	 * @uml.property  name="mazo"
	 */
	public boolean containsAllMazo(Collection mazo) {
		return this.mazo.containsAll(mazo);
	}

	/**
	 * Returns the number of elements in this collection.
	 * @return  the number of elements in this collection
	 * @see java.util.Collection#size()
	 * @uml.property  name="mazo"
	 */
	public int mazoSize() {
		return mazo.size();
	}

	/**
	 * Returns all elements of this collection in an array.
	 * @return  an array containing all of the elements in this collection
	 * @see java.util.Collection#toArray()
	 * @uml.property  name="mazo"
	 */
	public Mazo[] mazoToArray() {
		return (Mazo[]) mazo.toArray(new Mazo[mazo.size()]);
	}

	/**
	 * Returns an array containing all of the elements in this collection;  the runtime type of the returned array is that of the specified array.
	 * @param a  the array into which the elements of this collection are to be stored.
	 * @return  an array containing all of the elements in this collection
	 * @see java.util.Collection#toArray(Object[])
	 * @uml.property  name="mazo"
	 */
	public Mazo[] mazoToArray(Mazo[] mazo) {
		return (Mazo[]) this.mazo.toArray(mazo);
	}

	/**
	 * Ensures that this collection contains the specified element (optional operation). 
	 * @param element  whose presence in this collection is to be ensured.
	 * @see java.util.Collection#add(Object)
	 * @uml.property  name="mazo"
	 */
	public boolean addMazo(Mazo mazo) {
		return this.mazo.add(mazo);
	}

	/**
	 * Setter of the property <tt>mazo</tt>
	 * @param mazo  the mazo to set.
	 * @uml.property  name="mazo"
	 */
	public void setMazo(Collection mazo) {
		this.mazo = mazo;
	}

	/**
	 * Removes a single instance of the specified element from this collection, if it is present (optional operation).
	 * @param element  to be removed from this collection, if present.
	 * @see java.util.Collection#add(Object)
	 * @uml.property  name="mazo"
	 */
	public boolean removeMazo(Mazo mazo) {
		return this.mazo.remove(mazo);
	}

	/**
	 * Removes all of the elements from this collection (optional operation).
	 * @see java.util.Collection#clear()
	 * @uml.property  name="mazo"
	 */
	public void clearMazo() {
		this.mazo.clear();
	}

	/**
	 * @uml.property  name="iFicha2"
	 * @uml.associationEnd  aggregation="composite" inverse="tablero2:IFicha"
	 */
	private IFicha ficha2;

	/**
	 * Getter of the property <tt>iFicha2</tt>
	 * @return  Returns the ficha2.
	 * @uml.property  name="iFicha2"
	 */
	public IFicha getIFicha2() {
		return ficha2;
	}

	/**
	 * Setter of the property <tt>iFicha2</tt>
	 * @param iFicha2  The ficha2 to set.
	 * @uml.property  name="iFicha2"
	 */
	public void setIFicha2(IFicha ficha2) {
		this.ficha2 = ficha2;
	}

	/**
	 * @uml.property  name="jugador1"
	 * @uml.associationEnd  inverse="tablero1:Jugador"
	 */
	private Jugador jugador1;

	/**
	 * Getter of the property <tt>jugador1</tt>
	 * @return  Returns the jugador1.
	 * @uml.property  name="jugador1"
	 */
	public Jugador getJugador1() {
		return jugador1;
	}

	/**
	 * Setter of the property <tt>jugador1</tt>
	 * @param jugador1  The jugador1 to set.
	 * @uml.property  name="jugador1"
	 */
	public void setJugador1(Jugador jugador1) {
		this.jugador1 = jugador1;
	}

	/**
	 * @uml.property   name="jugador2"
	 * @uml.associationEnd   multiplicity="(0 -1)" aggregation="composite" inverse="tablero2:Jugador"
	 */
	private Collection jugador2;

	/** 
	 * Getter of the property <tt>jugador2</tt>
	 * @return  Returns the jugador2.
	 * @uml.property  name="jugador2"
	 */
	public Collection getJugador2() {
		return jugador2;
	}

	/**
	 * Returns an iterator over the elements in this collection. 
	 * @return  an <tt>Iterator</tt> over the elements in this collection
	 * @see java.util.Collection#iterator()
	 * @uml.property  name="jugador2"
	 */
	public Iterator jugador2Iterator() {
		return jugador2.iterator();
	}

	/**
	 * Returns <tt>true</tt> if this collection contains no elements.
	 * @return  <tt>true</tt> if this collection contains no elements
	 * @see java.util.Collection#isEmpty()
	 * @uml.property  name="jugador2"
	 */
	public boolean isJugador2Empty() {
		return jugador2.isEmpty();
	}

	/**
	 * Returns <tt>true</tt> if this collection contains the specified element. 
	 * @param element  whose presence in this collection is to be tested.
	 * @see java.util.Collection#contains(Object)
	 * @uml.property  name="jugador2"
	 */
	public boolean containsJugador2(Jugador jugador) {
		return jugador2.contains(jugador);
	}

	/**
	 * Returns <tt>true</tt> if this collection contains all of the elements in the specified collection.
	 * @param elements  collection to be checked for containment in this collection.
	 * @see java.util.Collection#containsAll(Collection)
	 * @uml.property  name="jugador2"
	 */
	public boolean containsAllJugador2(Collection jugador2) {
		return this.jugador2.containsAll(jugador2);
	}

	/**
	 * Returns the number of elements in this collection.
	 * @return  the number of elements in this collection
	 * @see java.util.Collection#size()
	 * @uml.property  name="jugador2"
	 */
	public int jugador2Size() {
		return jugador2.size();
	}

	/**
	 * Returns all elements of this collection in an array.
	 * @return  an array containing all of the elements in this collection
	 * @see java.util.Collection#toArray()
	 * @uml.property  name="jugador2"
	 */
	public Jugador[] jugador2ToArray() {
		return (Jugador[]) jugador2.toArray(new Jugador[jugador2.size()]);
	}

	/**
	 * Returns an array containing all of the elements in this collection;  the runtime type of the returned array is that of the specified array.
	 * @param a  the array into which the elements of this collection are to be stored.
	 * @return  an array containing all of the elements in this collection
	 * @see java.util.Collection#toArray(Object[])
	 * @uml.property  name="jugador2"
	 */
	public Jugador[] jugador2ToArray(Jugador[] jugador2) {
		return (Jugador[]) this.jugador2.toArray(jugador2);
	}

	/**
	 * Ensures that this collection contains the specified element (optional operation). 
	 * @param element  whose presence in this collection is to be ensured.
	 * @see java.util.Collection#add(Object)
	 * @uml.property  name="jugador2"
	 */
	public boolean addJugador2(Jugador jugador) {
		return jugador2.add(jugador);
	}

	/** 
	 * Setter of the property <tt>jugador2</tt>
	 * @param jugador2  The jugador2 to set.
	 * @uml.property  name="jugador2"
	 */
	public void setJugador2(Collection jugador2) {
		this.jugador2 = jugador2;
	}

	/**
	 * Removes a single instance of the specified element from this collection, if it is present (optional operation).
	 * @param element  to be removed from this collection, if present.
	 * @see java.util.Collection#add(Object)
	 * @uml.property  name="jugador2"
	 */
	public boolean removeJugador2(Jugador jugador) {
		return jugador2.remove(jugador);
	}

	/**
	 * Removes all of the elements from this collection (optional operation).
	 * @see java.util.Collection#clear()
	 * @uml.property  name="jugador2"
	 */
	public void clearJugador2() {
		jugador2.clear();
	}

	/**
	 * @uml.property  name="mundo"
	 * @uml.associationEnd  multiplicity="(0 -1)" dimension="1" ordering="true" inverse="tablero:Mundo"
	 */
	private Mundo[] mundos;

	/**
	 * Getter of the property <tt>mundo</tt>
	 * @return  Returns the mundos.
	 * @uml.property  name="mundo"
	 */
	public Mundo[] getMundo() {
		return mundos;
	}

	/**
	 * Setter of the property <tt>mundo</tt>
	 * @param mundo  The mundos to set.
	 * @uml.property  name="mundo"
	 */
	public void setMundo(Mundo[] mundo) {
		mundos = mundo;
	}

	/**
	 * @uml.property  name="mundo1"
	 * @uml.associationEnd  multiplicity="(0 -1)" dimension="1" ordering="true" aggregation="composite" inverse="tablero1:Mundo"
	 */
	private Mundo[] mundo1s;

	/**
	 * Getter of the property <tt>mundo1</tt>
	 * @return  Returns the mundo1s.
	 * @uml.property  name="mundo1"
	 */
	public Mundo[] getMundo1() {
		return mundo1s;
	}

	/**
	 * Setter of the property <tt>mundo1</tt>
	 * @param mundo1  The mundo1s to set.
	 * @uml.property  name="mundo1"
	 */
	public void setMundo1(Mundo[] mundo1) {
		mundo1s = mundo1;
	}

		
		/**
		 */
		public void CreateTablero(){
		}

}
